// PROGRAMA : SIGO001(PROGRAMA BATCH)  18/11/2009
// OBJETIVO : GERAR ARQUIVO PARA ATUALIZACAO DO RG NO SIGO
// JCL : SIGORG (PDS.SEJUSP)
// PASSWORD : SISP|UIDC|IDC (PARA ACESSO A BIBLIOTECA SISP VIA JCL
// OBS: CADASTRO IDENT. CIVIL (RG) APENAS DO ANO DE 2008 E 2009
// OBS: TAMANHO DO REGISTRO = 709 BYTES
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileWriter;
import java.io.IOException;

import org.apache.commons.lang3.StringUtils;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.model.LocalRg;
import br.com.vti.sisp_sicrim.antigo.model.SicRg;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Sigo001 OBJETIVO : GERAR ARQUIVO PARA ATUALIZACAO DO RG NO SIGO JCL : SIGORG (PDS.SEJUSP) PASSWORD : SISP|UIDC|IDC (PARA ACESSO A BIBLIOTECA SISP VIA JCL *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/sigo001")
public class Sigo001 {
	// Views utilizadas
	SicTabelas vwTabele = new SicTabelas();
	SicTabelas vwDvetab = new SicTabelas();
	DidCadastro vwDidcad = new DidCadastro();
	SicRg vwsicrg = new SicRg();
	// Telas/relatorios utilizados
	// Includes utilizados
	LocalRg localRg = new LocalRg();
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	FileWriter arquivo1;
	
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Sigo001 sigo001Anterior;
	String faseproc = "0";
	// N. ESPELHO
	private String comun = "";
	// private int wdata = 0;
	private int contReg = 0;
	private String regSsp = ""; // OBS: SEMPRE QUE INFORMAR A DATA NO FORMATO
								// AAAAMMDD, SUBTRAIR UM DIA

	public Sigo001(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar() {
		try {
			main();
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main() throws IOException {
		arquivo1 = new FileWriter("arquivo1");
		while (vwDidcad.pesquisaDataAtualizacaoMaior(20061231)) {
			mover();
			arquivo1.write(regSsp); // / writeworkfile__
									// (;_CMDARGNFILEW;_CMDARGBUF;)
			contReg += 1;
			//dao.commit();

			if (vwDidcad.registrosProcessados() == 0) {
				UtilBean.mensagemTexto("#ERRO: REGISTRO NAO ENCONTRADO NO DID-CADASTRO");
			}
			UtilBean.mensagemTexto("REGISTROS GRAVADOS NO SISP.SIGO001 =" + contReg);
		}
		arquivo1.close();
	}

	private void mover() {

		localRg.iUfRg = vwDidcad.getUfMunicipioNasc();
		localRg.iRegger = vwDidcad.getNumeroRg();
		localRg.iNomide = vwDidcad.getNomeIdent();
		localRg.iCodcep = vwDidcad.getCodigoCep();
		localRg.iDatnas = vwDidcad.getDataNasc();
		localRg.iNumcpf = String.valueOf(vwDidcad.getNumeroCpf());
		localRg.iCodsex = vwDidcad.getCodigoSexo();
		localRg.iNompai = vwDidcad.getNomePai();
		localRg.iNommae = vwDidcad.getNomeMae();
		localRg.iUfnasc = vwDidcad.getUfMunicipioNasc();
		if (vwDidcad.getNacionalidadeIdent() == 1) {
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 1);
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getNomeMunicipioIdent());
			// TABELA DE MUNICIPIOS
			// NOME DO MUNICIPIO
			vwDvetab.resp = funcoes.sisst001(1, vwDidcad.getNomeMunicipioIdent(), vwDvetab.resp);
			localRg.iCidadeNatal = vwTabele.resp;
			if (UtilBean.subStr(vwTabele.resp, 0, 1).equals("#")) {
				vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 209);
				vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getPaisOrigem());
				// TABELA DE PAISES
				// PAIS DE ORIGEM
				vwDvetab.resp = funcoes.sisst001(209, vwDidcad.getPaisOrigem(), vwDvetab.resp);
				localRg.iCidadeNatal = vwTabele.resp;
			}

			comun = localRg.iCidadeNatal;
			comun = UtilBean.concatena(localRg.iCidadeNatal, "-", vwDidcad.getUfMunicipioNasc());
		} else {
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 209);
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getPaisOrigem());
			vwDvetab.resp = funcoes.sisst001(209, vwDidcad.getPaisOrigem(), vwDvetab.resp);
			localRg.iCidadeNatal = vwTabele.resp;

			comun = localRg.iCidadeNatal;
		}

		localRg.iEndere = vwDidcad.getEnderecoIdent();
		localRg.iBairro = vwDidcad.getNomeBairro();
		localRg.iTelefone = " ";

		localRg.iEmail = " ";

		localRg.iCodcep = vwDidcad.getCodigoCep();
		localRg.iUfmure = vwDidcad.getUfMunicipio();
		if (vwDidcad.getUfMunicipio().equals("AC")) {

			localRg.iComuen = "ACRE";
		}
		if (vwDidcad.getUfMunicipio().equals("AL")) {

			localRg.iComuen = "ALAGOAS";
		}
		if (vwDidcad.getUfMunicipio().equals("AM")) {

			localRg.iComuen = "AMAZONAS";
		}
		if (vwDidcad.getUfMunicipio().equals("AP")) {

			localRg.iComuen = "AMAPA";
		}
		if (vwDidcad.getUfMunicipio().equals("BA")) {

			localRg.iComuen = "BAHIA";
		}
		if (vwDidcad.getUfMunicipio().equals("CE")) {

			localRg.iComuen = "CEARA";
		}
		if (vwDidcad.getUfMunicipio().equals("DF")) {

			localRg.iComuen = "DISTRITO FEDERAL";
		}
		if (vwDidcad.getUfMunicipio().equals("ES")) {

			localRg.iComuen = "ESPIRITO SANTO";
		}
		if (vwDidcad.getUfMunicipio().equals("GO")) {

			localRg.iComuen = "GOIAIS";
		}
		if (vwDidcad.getUfMunicipio().equals("MA")) {

			localRg.iComuen = "MARANHAO";
		}
		if (vwDidcad.getUfMunicipio().equals("MT")) {

			localRg.iComuen = "MATO GROSSO";
		}
		if (vwDidcad.getUfMunicipio().equals("MS")) {

			localRg.iComuen = "MATO GROSSO DO SUL";
		}
		if (vwDidcad.getUfMunicipio().equals("MG")) {

			localRg.iComuen = "MINAS GERAIS";
		}
		if (vwDidcad.getUfMunicipio().equals("PB")) {

			localRg.iComuen = "PARAIBA";
		}
		if (vwDidcad.getUfMunicipio().equals("PE")) {

			localRg.iComuen = "PERNAMBUCO";
		}
		if (vwDidcad.getUfMunicipio().equals("PI")) {

			localRg.iComuen = "PIAUI";
		}
		if (vwDidcad.getUfMunicipio().equals("PR")) {

			localRg.iComuen = "PARANA";
		}
		if (vwDidcad.getUfMunicipio().equals("RN")) {

			localRg.iComuen = "RIO GRANDE DO NORTE";
		}

		localRg.iDatdoc = vwDidcad.getDataDocumento();
		localRg.iPispas = vwDidcad.getNumeroPisPasep();
		localRg.iDiaideObserv = vwDidcad.getObservacaoAdocao();
		localRg.iDatdoc = vwDidcad.getDataDocumento();
		localRg.iDespro = vwDidcad.getDespro();
		localRg.iNacion = "BRASILEIRA";
		if (UtilBean.subStr(vwDvetab.resp, 0, 1).equals("#")) {
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 209);
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getNacionalidadeIdent());
			// TABELA DE PAISES
			// PAIS DE ORIGEM
			vwDvetab.resp = funcoes.sisst001(209, vwDidcad.getNacionalidadeIdent(), vwDvetab.resp);
			localRg.iNacion = vwTabele.resp;
		}
		if (vwDidcad.getCodigoTipoCabelo() == 1) {

			localRg.iTipcab = "LISOS";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 2) {

			localRg.iTipcab = "ENCARACOLADOS";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 3) {

			localRg.iTipcab = "ONDULADOS";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 4) {

			localRg.iTipcab = "CARAPINHA";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 5) {

			localRg.iTipcab = "CRESPO";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 6) {

			localRg.iTipcab = "CAUVO";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 7) {

			localRg.iTipcab = "CARECA";
		}
		if (vwDidcad.getCodigoCorOlhos() == 1) {

			localRg.iCorolh = "PRETOS";
		}
		if (vwDidcad.getCodigoCorOlhos() == 2) {

			localRg.iCorolh = "VERDES";
		}
		if (vwDidcad.getCodigoCorOlhos() == 3) {

			localRg.iCorolh = "AZUIS";
		}
		if (vwDidcad.getCodigoCorOlhos() == 4) {

			localRg.iCorolh = "CASTANHOS";
		}
		if (vwDidcad.getCodigoCorOlhos() == 5) {

			localRg.iCorolh = "ALBINOS";
		}

		localRg.iAltura = String.valueOf(vwDidcad.getAlturaIdent());
		localRg.iDatnas = vwDidcad.getDataNasc();
		if (vwDidcad.getNumeroPisPasep() > 0) {
			localRg.iPispas = vwDidcad.getNumeroPisPasep();
		} else {
			localRg.iPispas = 0;
		}
		if (vwDidcad.getNumeroCpf() > 0) {
			localRg.iNumcpf = String.valueOf(vwDidcad.getNumeroCpf());
		} else {
			localRg.iNumcpf = StringUtils.repeat("*", 11);
		}
		if (localRg.iNumcpf.equals("0")) {
			localRg.iNumcpf = StringUtils.repeat("*", 11);
		}
		if (vwDidcad.getTipoDocumento() == 1) {

			localRg.iTipdoc = "CERT. NASCIMENTO";
		}
		if (vwDidcad.getTipoDocumento() == 2) {

			localRg.iTipdoc = "CERT. CASAMENTO";
		}
		if (vwDidcad.getTipoDocumento() == 3) {

			localRg.iTipdoc = "CERT. DE NATURALIDADE";
		}
		if (vwDidcad.getTipoDocumento() == 4) {

			localRg.iTipdoc = "CERT. DE DIREITOS E DEVERES";
		}
		if (vwDidcad.getTipoDocumento() == 5) {

			localRg.iTipdoc = "SEPARACAO JUDICIAL";
		}
		if (vwDidcad.getTipoDocumento() == 6) {

			localRg.iTipdoc = "DIVORCIADO";
		}
		if (vwDidcad.getTipoDocumento() == 7) {

			localRg.iTipdoc = "DESQUITADO";
		}

		localRg.iComuen = String.valueOf(vwDidcad.getCodigoMunicipio());
		localRg.iCodcut = String.valueOf(vwDidcad.getCodigoCutis());
		if (vwDidcad.getCodigoCutis() == 1) {

			localRg.iCodcut = "BRANCA";
		}
		if (vwDidcad.getCodigoCutis() == 2) {

			localRg.iCodcut = "NEGRA";
		}
		if (vwDidcad.getCodigoCutis() == 3 || vwDidcad.getCodigoCutis() == 4) {

			localRg.iCodcut = "PARDA";
		}
		if (vwDidcad.getCodigoCutis() == 5) {

			localRg.iCodcut = "AMARELA";
		}
		regSsp = "";
		regSsp = UtilBean.moveSubstring(regSsp, 0, 2, "A", localRg.iUfRg);
		regSsp = UtilBean.moveSubstring(regSsp, 2, 13, "N", localRg.iRegger);
		regSsp = UtilBean.moveSubstring(regSsp, 15, 60, "A", localRg.iNomide);
		regSsp = UtilBean.moveSubstring(regSsp, 75, 8, "A", localRg.iCepNascimento);
		regSsp = UtilBean.moveSubstring(regSsp, 83, 8, "N", localRg.iDatnas);
		regSsp = UtilBean.moveSubstring(regSsp, 91, 11, "A", localRg.iNumcpf);
		regSsp = UtilBean.moveSubstring(regSsp, 102, 1, "N", localRg.iCodsex);
		regSsp = UtilBean.moveSubstring(regSsp, 103, 60, "A", localRg.iNompai);
		regSsp = UtilBean.moveSubstring(regSsp, 163, 60, "A", localRg.iNommae);
		regSsp = UtilBean.moveSubstring(regSsp, 223, 2, "A", localRg.iUfnasc);
		regSsp = UtilBean.moveSubstring(regSsp, 225, 40, "A", localRg.iCidadeNatal);
		regSsp = UtilBean.moveSubstring(regSsp, 265, 60, "A", localRg.iEndere);
		regSsp = UtilBean.moveSubstring(regSsp, 325, 30, "A", localRg.iBairro);
		regSsp = UtilBean.moveSubstring(regSsp, 355, 14, "A", localRg.iTelefone);
		regSsp = UtilBean.moveSubstring(regSsp, 369, 40, "A", localRg.iEmail);
		regSsp = UtilBean.moveSubstring(regSsp, 409, 8, "N", localRg.iCodcep);
		regSsp = UtilBean.moveSubstring(regSsp, 417, 2, "A", localRg.iUfmure);
		regSsp = UtilBean.moveSubstring(regSsp, 419, 40, "A", localRg.iComuen);
		regSsp = UtilBean.moveSubstring(regSsp, 459, 8, "N", localRg.iDataCadastro);
		regSsp = UtilBean.moveSubstring(regSsp, 467, 12, "N", localRg.iPispas);
		regSsp = UtilBean.moveSubstring(regSsp, 479, 30, "A", localRg.iDiaideObserv);
		regSsp = UtilBean.moveSubstring(regSsp, 509, 8, "N", localRg.iDatdoc);
		regSsp = UtilBean.moveSubstring(regSsp, 517, 60, "A", localRg.iDespro);
		regSsp = UtilBean.moveSubstring(regSsp, 577, 40, "A", localRg.iNacion);
		regSsp = UtilBean.moveSubstring(regSsp, 617, 15, "A", localRg.iTipcab);
		regSsp = UtilBean.moveSubstring(regSsp, 632, 15, "A", localRg.iCorolh);
		regSsp = UtilBean.moveSubstring(regSsp, 647, 15, "A", localRg.iAltura);
		regSsp = UtilBean.moveSubstring(regSsp, 662, 30, "A", localRg.iTipdoc);
		regSsp = UtilBean.moveSubstring(regSsp, 692, 7, "A", localRg.iCodcut);
		regSsp = UtilBean.moveSubstring(regSsp, 699, 10, "N", localRg.iControleCi);
	}
}
